package com.jinan.algorithm.dynamicProgramming;

/**
 * 最长连续递增序列
 * 给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。
 * 序列的下标是连续的
 */
public class LongestContinuousIncreasingSubsequence {
    /**
     * 思路：动态规划
     * 我们创建了一个dp数组，其中dp[i]表示以nums[i]结尾的最长连续递增子序列的长度。
     * 我们从左到右遍历数组，对于每个元素，
     * 如果它比前一个元素大，那么以它结尾的最长连续递增子序列的长度就是以前一个元素结尾的最长连续递增子序列的长度加1。
     * 否则，以它结尾的最长连续递增子序列的长度就是1。在遍历的过程中，我们持续更新最大值。
     * @param nums
     * @return
     */
    public static int findLengthOfLCIS(int[] nums) {
        if(nums==null||nums.length==0){
            return 0;
        }
        int max=1;
        int[] dp=new int[nums.length];
        dp[0]=1;
        for (int i=1;i<nums.length;i++){
            if(nums[i]>nums[i-1]){
                dp[i]=dp[i-1]+1;
            }else dp[i]=1;
            max=Math.max(max,dp[i]);
        }
        return max;
    }

    public static void main(String[] args) {
        int[] nums = {1,3,5,4,7};
        System.out.println(findLengthOfLCIS(nums));
    }
}
